]> git.neil.brown.name Git - wiggle.git/commitdiff
Move save functions to vpatch.c
authorNeilBrown <neil@brown.name>
Sat, 3 Oct 2020 10:21:13 +0000 (20:21 +1000)
committerNeilBrown <neil@brown.name>
Sat, 3 Oct 2020 10:21:13 +0000 (20:21 +1000)
save_merge and save_tmp_merge are only used in vpatch.c and don't
depend on anything from merge2.c that isn't exported, so move
them to vpatch.c

Signed-off-by: NeilBrown <neil@brown.name>
merge2.c
vpatch.c
wiggle.h

index 435f859d905e4954ced680896ae68d44b585dee2..24ccd73eebff2ed54294fd4c28f26b83ff5e6cf3 100644 (file)
--- a/merge2.c
+++ b/merge2.c
@@ -912,79 +912,3 @@ int print_merge(FILE *out, struct file *a, struct file *b, struct file *c,
        }
        return rv;
 }
-
-int save_merge(struct file a, struct file b, struct file c,
-              struct merge *merger, char *file, int backup)
-{
-       char *replacename = xmalloc(strlen(file) + 20);
-       char *orignew = xmalloc(strlen(file) + 20);
-       int fd;
-       FILE *outfile;
-       int err = 0;
-       int lineno = 0;
-       strcpy(replacename, file);
-       strcat(replacename, "XXXXXX");
-       strcpy(orignew, file);
-       strcat(orignew, ".porig");
-
-       fd = mkstemp(replacename);
-       if (fd < 0) {
-               err = -1;
-               goto out;
-       }
-       outfile = fdopen(fd, "w");
-       lineno = print_merge(outfile, &a, &b, &c, 0, merger,
-                            NULL, 0, 0);
-       fclose(outfile);
-       if (backup && rename(file, orignew) != 0)
-               err = -2;
-       else if (rename(replacename, file) != 0)
-               err = -2;
-
-out:
-       free(replacename);
-       free(orignew);
-       return err < 0 ? err : lineno;
-}
-
-int save_tmp_merge(struct file a, struct file b, struct file c,
-                  struct merge *merger, char **filep,
-                  struct merge *mpos, int streampos, int offsetpos)
-{
-       int fd;
-       FILE *outfile;
-       char *dir, *fname;
-       int lineno;
-       int suffix = 0;
-
-       if (!*filep) {
-               dir = getenv("TMPDIR");
-               if (!dir)
-                       dir = "/tmp";
-
-               asprintf(&fname, "%s/wiggle-tmp-XXXXXX", dir);
-       } else {
-               char *base;
-               dir = *filep;
-               base = strrchr(dir, '/');
-               if (base)
-                       base++;
-               else
-                       base = dir;
-               asprintf(&fname, "%.*stmp-XXXXXX-%s", (int)(base-dir), dir, base);
-               suffix = strlen(base)+1;
-       }
-       fd = mkstemps(fname, suffix);
-
-       if (fd < 0) {
-               free(fname);
-               *filep = NULL;
-               return -1;
-       }
-       outfile = fdopen(fd, "w");
-       lineno = print_merge(outfile, &a, &b, &c, 0, merger,
-                            mpos, streampos, offsetpos);
-       fclose(outfile);
-       *filep = fname;
-       return lineno;
-}
index 353c2f4616494943482b46cf960954851efb15b0..abbb4c6d6f9952292cd9186399cd2aa59ba52c71 100644 (file)
--- a/vpatch.c
+++ b/vpatch.c
@@ -1291,6 +1291,83 @@ static void *memdup(void *a, int len)
        return r;
 }
 
+
+static int save_merge(struct file a, struct file b, struct file c,
+                     struct merge *merger, char *file, int backup)
+{
+       char *replacename = xmalloc(strlen(file) + 20);
+       char *orignew = xmalloc(strlen(file) + 20);
+       int fd;
+       FILE *outfile;
+       int err = 0;
+       int lineno = 0;
+       strcpy(replacename, file);
+       strcat(replacename, "XXXXXX");
+       strcpy(orignew, file);
+       strcat(orignew, ".porig");
+
+       fd = mkstemp(replacename);
+       if (fd < 0) {
+               err = -1;
+               goto out;
+       }
+       outfile = fdopen(fd, "w");
+       lineno = print_merge(outfile, &a, &b, &c, 0, merger,
+                            NULL, 0, 0);
+       fclose(outfile);
+       if (backup && rename(file, orignew) != 0)
+               err = -2;
+       else if (rename(replacename, file) != 0)
+               err = -2;
+
+out:
+       free(replacename);
+       free(orignew);
+       return err < 0 ? err : lineno;
+}
+
+static int save_tmp_merge(struct file a, struct file b, struct file c,
+                         struct merge *merger, char **filep,
+                         struct merge *mpos, int streampos, int offsetpos)
+{
+       int fd;
+       FILE *outfile;
+       char *dir, *fname;
+       int lineno;
+       int suffix = 0;
+
+       if (!*filep) {
+               dir = getenv("TMPDIR");
+               if (!dir)
+                       dir = "/tmp";
+
+               asprintf(&fname, "%s/wiggle-tmp-XXXXXX", dir);
+       } else {
+               char *base;
+               dir = *filep;
+               base = strrchr(dir, '/');
+               if (base)
+                       base++;
+               else
+                       base = dir;
+               asprintf(&fname, "%.*stmp-XXXXXX-%s", (int)(base-dir), dir, base);
+               suffix = strlen(base)+1;
+       }
+       fd = mkstemps(fname, suffix);
+
+       if (fd < 0) {
+               free(fname);
+               *filep = NULL;
+               return -1;
+       }
+       outfile = fdopen(fd, "w");
+       lineno = print_merge(outfile, &a, &b, &c, 0, merger,
+                            mpos, streampos, offsetpos);
+       fclose(outfile);
+       *filep = fname;
+       return lineno;
+}
+
 static int merge_window(struct plist *p, FILE *f, int reverse, int replace,
                        int selftest, int ignore_blanks, int just_diff, int backup)
 {
index dcee33758ef56919b3b6db25171af27072858887..90e71f207dee628ec64e0826b182c1555da4ef8b 100644 (file)
--- a/wiggle.h
+++ b/wiggle.h
@@ -170,11 +170,6 @@ extern int print_merge(FILE *out,
                       int words, struct merge *merger,
                       struct merge *mpos, int streampos, int offsetpos);
 extern void printword(FILE *f, struct elmnt e);
-extern int save_merge(struct file a, struct file b, struct file c,
-                     struct merge *merger, char *file, int backup);
-extern int save_tmp_merge(struct file a, struct file b, struct file c,
-                         struct merge *merger, char **filep,
-                         struct merge *mpos, int streampos, int offsetpos);
 
 extern int isolate_conflicts(struct file af, struct file bf, struct file cf,
                             struct csl *csl1, struct csl *csl2, int words,